import '../../core.dart';

///详情加载model类
abstract class ViewStateDetailModel<T> extends ViewStateLoadCacheModel {
  @override
  Future initData() async {
    try {
      bool isEmpty = false;
      if (!cached) {
        setBusy();
        isEmpty = await loadData();
        await fetchUser();
        freeLoad();
      } else {
        if (userBusy()) {
          setBusy();
          await fetchUser(notify: false);
          setIdle();
        } else
          await fetchUser(notify: false);

        freeLoad();
        isEmpty = await loadData();
      }
      if (isEmpty)
        setEmpty();
      else
        setIdle();
    } catch (e, s) {
      //页面不为空不处理状态
      if (!pageEmpty()) {
        setIdle();
        printErrorStack(e, s);
        return;
      }

      setError(e, s);
      onError(e, s);
    }
  }

  //加载用户信息 是否让页面处于 busy
  bool userBusy() => true;

  //获取关联用户的接口
  Future fetchUser({bool notify = true}) async {}

  //自由加载数据 不需要等待loadData()方法 自己刷新
  Future freeLoad({bool notify = true}) async {}

  //检查用户登录
  // Future<bool> checkLogin(BuildContext context) async {
  //   return UserManager.isLogin(context,
  //       loginCallback: (user) => fetchUser(notify: true));
  // }
}
